The High-Efficiency Video Coding (HEVC) standard is the latest video coding standard developed by the Joint Collaborative Team on Video Coding (JCT-VC) group of video coding experts from ITU-T Study Group. The HEVC standard relies on a block-based coding structure which divides each slice into multiple Coding Tree Units (CTUs). In the HEVC main profile, the minimum and the maximum sizes of a CTU are specified by syntax elements signaled in the Sequence Parameter Set (SPS). The CTUs in a slice are processed according to a raster scan order. Each CTU is further recursively divided into one or more Coding Units (CUs) according to a quadtree partitioning method to adapt to various local characteristics. The CU size is restricted to be less than or equal to a minimum allowed CU size, which is also specified in the SPS. An example of the quadtree block partitioning structure for a CTU is illustrated in FIG. 1, where the solid lines indicate CU boundaries in CTU 100.
The prediction decision is made at the CU level, where each CU is either coded by Inter picture prediction or Intra picture prediction. Once the splitting of CU hierarchical tree is done, each CU is subject to further split into one or more Prediction Units (PUs) according to a PU partition type for prediction. FIG. 2 shows eight PU partition types defined in the HEVC standard. Each CU is split into one, two, or four PUs according to one of the eight PU partition types shown in FIG. 2. The PU works as a basic representative block for sharing the prediction information as the same prediction process is applied to all pixels in the PU and prediction relevant information is conveying to the decoder on a PU basis. After obtaining a residual signal generated by the prediction process, residual data of the residual signal belong to a CU is split into one or more Transform Units (TUs) according to another quadtree block partitioning structure for transforming the residual data into transform coefficients for compact data representation. The dotted lines in FIG. 1 indicate TU boundaries. The TU is a basic representative block for applying transform and quantization on the residual signal. For each TU, a transform matrix having the same size as the TU is applied to the residual signal to generate the transform coefficients, and these transform coefficients are quantized and conveyed to the decoder on a TU basis.
The terms Coding Tree Block (CTB), Coding block (CB), Prediction Block (PB), and Transform Block (TB) are defined to specify two-dimensional sample array of one color component associated with the CTU, CU, PU, and TU respectively. For example, a CTU consists of one luminance (luma) CTB, two chrominance (chroma) CTBs, and its associated syntax elements. In the HEVC system, the same quadtree block partitioning structure is generally applied to both luma and chroma components unless a minimum size for chroma block is reached.
An alternative partitioning method is called binary tree block partitioning, where a block is recursively split into two smaller blocks. A simplest binary tree partitioning method only allows symmetrical horizontal splitting and symmetrical vertical splitting. Although the binary tree partitioning method supports more partition shapes and thus is more flexible than the quadtree partitioning method, the coding complexity and signaling overhead increase for selecting the best partition shape among all possible partition shapes. A combined partitioning method called Quad-Tree-Binary-Tree (QTBT) structure combines a quadtree partitioning method with a binary tree partitioning method, which balances the coding efficiency and the coding complexity of the two partitioning methods. An exemplary QTBT structure is shown in FIG. 3A, where a large block such as a CTU is firstly partitioned by a quadtree partitioning method then a binary tree partitioning method. FIG. 3A illustrates an example of block partitioning structure according to the QTBT partitioning method and FIG. 3B illustrates a coding tree diagram for the QTBT block partitioning structure shown in FIG. 3A. The solid lines in FIGS. 3A and 3B indicate quadtree splitting while the dotted lines indicate binary tree splitting. In each splitting (i.e., non-leaf) node of the binary tree structure, one flag indicates which splitting type (symmetric horizontal splitting or symmetric vertical splitting) is used, 0 indicates horizontal splitting and 1 indicates vertical splitting. It is possible to simplify the partitioning process by omitting the splitting from CU to PU and from CU to TU, as the leaf nodes of a binary tree block partitioning structure is the basic representative block for both prediction and transform coding. For example, the QTBT structure shown in FIG. 3A splits the large block into multiple smaller blocks, and these smaller blocks are processed by prediction and transform coding without further splitting.
Another partitioning method called triple tree partitioning method is introduced to capture objects which locate in the block center while quadtree partitioning method and binary tree partitioning method always split along the block center. Two exemplary triple tree partition types include horizontal center-side triple tree partitioning and vertical center-side triple tree partitioning. The triple tree partitioning method may provide capability to faster localize small objects along block boundaries, by allowing one-quarter partitioning vertically or horizontally.
A quantization parameter (QP) is determined by a reference QP and a delta QP when adaptive QP or multi-QP optimization is enabled in HEVC. The delta QP is transmitted instead of the QP in order to reduce the bit rate required for QP information. Delta QP signaling for the luma component is controlled by two flags, an enable flag cu_qp_delta_enabled_flag and a depth flag diff_cu_qp_delta_depth. The enable flag, cu_qp_delta_enabled_flag, is used to indicate delta QP signaling is enabled or disabled, and the depth flag, diff_cu_qp_delta_depth, is used to set the minimum size for delta QP signaling. The depth flag diff_cu_qp_delta_depth is presented at a high level syntax. A Coding Block (CB) larger than or equal to a minimum size for delta QP signaling has its own delta QP, whereas a CB smaller than the minimum size shares a delta QP with one or more other CBs. A single CB having its own delta QP or a number of CBs sharing the same delta QP is referred to as a quantization group or quantization unit. FIG. 4 illustrates an example of quantization groups in the CTU of FIG. 1, where the size of the CTU is 64×64 and the minimum size for delta QP signaling is 16×16. The thick solid lines in FIG. 6 represent the boundaries of the quantization groups, the solid lines represent CU boundaries, and the dotted lines represent TU boundaries. Multiple CUs in one quantization group share the same delta QP.
In the HEVC standard, the reference QP of a current quantization group is derived from QPs of left and above neighboring coded quantization groups, where the reference QP is an average of the two QPs. If any one of the left and above neighboring coded quantization group is unavailable, the unavailable QP is replaced by a previous QP of a previous coded quantization group in the decoding order. A default QP such as the slice QP is used as the previous QP if the previous coded quantization group is unavailable.
For encoding or decoding video data according to the HEVC standard, derivation of a reference QP may require the previous QP of a previous coded quantization group in the decoding order, where the previous coded quantization group is determined according to a z-scan order index of a current quantization group. Let the coordinate for a top-left luminance sample of a current picture to be (0,0), and the coordinate for a top-left luminance sample 460 of a current luminance coding block 46 to be (xCb, yCb) in FIG. 4. The current luminance coding block 46 is within a current quantization group 44. The location (xQg, yQg) specifies a top-left luminance sample 440 of the current quantization group 44 relative to the top-left luminance sample of the current picture. The horizontal position xQg of the top-left luminance sample 440 is set equal to xCb−(xCb & ((1<<Log 2MinCuQpDeltaSize)−1)), and the vertical position yQg of the top-left luminance sample 440 is set equal to yCb−(yCb & ((1<<Log 2MinCuQpDeltaSize)−1)), where Log 2MinCuQpDeltaSize represents the log 2 value of a minimum size for delta QP signaling. After deriving the top-left location (xQg, yQg) of the current quantization group 44, a z-scan order index of the current quantization group 44 is used to derive the z-scan order index of a previous coded quantization group 42. For example, the previous coded quantization group 42 in the decoding order is derived by the z-scan order index of the current quantization group minus 1.